#include "sm3_utils.h"
#include <string.h>

// 模拟SM3哈希计算
int sm3_hash(const uint8_t *data, size_t data_len, uint8_t digest[SM3_DIGEST_LENGTH]) {
    if (!data || !digest) return -1;
    
    // 在实际应用中，这里应该使用真正的SM3哈希算法
    // 这里仅作为示例，生成一个简单的哈希值
    memset(digest, 0, SM3_DIGEST_LENGTH);
    
    for (size_t i = 0; i < data_len; i++) {
        digest[i % SM3_DIGEST_LENGTH] ^= data[i];
    }
    
    return 0;
}

// 验证哈希值
int sm3_verify(const uint8_t *data, size_t data_len, const uint8_t expected_digest[SM3_DIGEST_LENGTH]) {
    uint8_t calculated_digest[SM3_DIGEST_LENGTH];
    
    if (sm3_hash(data, data_len, calculated_digest) != 0) {
        return -1;
    }
    
    return memcmp(calculated_digest, expected_digest, SM3_DIGEST_LENGTH) == 0 ? 0 : -1;
}